const path = require('path');
const fileUtils = require('../utils/file_utils');
// node不支持 ES6的这种模块导入导出的写法
/*import authData from '../data/auth_data';*/

const authData = require("../data/auth_data")

module.exports = async (ctx, next) => {
    // 接口地址 http://localhost:8888/auth/token
    // 接口地址 http://localhost:8888/auth/admin  接口地址 http://localhost:8888/auth/edit
    // 使用json文件 还是 对象
    const isJson = false
    const url = ctx.request.url
    let filePath = url.replace('/auth/', '')
    const headers = ctx.request.headers
    // 如果不是登陆请求 并且没有token 返回错误信息
    if((!headers.authorization || headers.Authorization) && !(filePath.indexOf("token")!==-1)){
        ctx.response.body = JSON.stringify({
            code: 403,
            errMsg: 'token异常，请重新登陆',
            data: null
        })
    } else {
        if(isJson){
            // 如果是请求token
            if(!(filePath.indexOf("token")!==-1)){
                filePath = 'auth_'+ filePath
            }
            filePath = '../data/' + filePath + '.json'
            filePath = path.join(__dirname, filePath)
        }
        try {
            let ret = null
            if(isJson){
                ret = await fileUtils.getFileJson(filePath)
                ret = JSON.parse(ret)
            } else {
                ret = authData[filePath]
            }
            const data = {
                code: 0,
                errMsg: '请求成功',
                data: ret
            }
            ctx.response.body = data
        } catch (e) {
            const err = {
                code: -1,
                errMsg: '请求地址错误，或服务器异常',
                data: null
            }
            ctx.response.body = JSON.stringify(err)
        }
    }


    // 等到所有中间件都执行完
    await next()

}